#!/usr/bin/env bash


# 这个例子在sed编辑器中使用了s命令。
# s命令会用斜线间指定的第二个文本字符串来替换第 一个文本字符串模式。在本例中是test被 big test替换。
# sed编辑器并不会修改文本文件的数据。它只会将修改后的数据发送到 STDOUT。如果你查看原来的文本文件，它仍然保留着原始数据.
echo "This is a test" | sed 's/test/big test/'

# cat ./data1.txt

# 把dog替换为cat
sed 's/dog/cat/' ./data1.txt

echo
# 要在sed命令行上执行多个命令时，只要用-e选项就可以了
# 两个命令都作用到文件中的每行数据上。命令之间必须用分号隔开，并且在命令末尾和分号之间不能有空格
sed -e 's/dog/cat/; s/brown/green/' ./data1.txt

echo
# 如果有大量要处理的sed命令，那么将它们放进一个单独的文件中通常会更方便一些。 可以在sed命令中用-f选项来指定文件
sed -f ./script1.sed ./data1.txt

# 当使用数字方式的行寻址时，可以用行在文本流中的行位置来引用。
# sed编辑器会将文本流 中的第一行编号为1，然后继续按顺序为接下来的行分配行号
# 只作用于第2行
sed '2s/dog/cat/' data1.txt

echo
sed '2,3s/dog/cat/' data1.txt

echo
# 作用于第2行及后面所有行
sed '2,$s/dog/cat/' data1.txt

# 只修改用户Samantha的默认shell，相当于先 grep  Samantha，然后再把bash替换为csh
sed '/Samantha/s/bash/csh/' /etc/passwd

